public abstract interface IDifferentialEquationSolver {
    double[] step(double h);
    
    // advance to time t, with recommended step size h
    double[] advanceTo(double t, double h);
}
